home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-10-09 | 29.2 KB | 1,252 lines |
- /* Definitionen fuer "GEMDOS" & "BIOS"-``Inline''-Betriebssystemaufrufe.
- *
- * Die Datei ist mit: #include "oscalls.m2h" noch vor dem eigentlichen
- * Programmcode als letzte ``Importdatei'' in die M2-Datei einzuladen.
- * Die Datei kann sowohl im aktuellen Verzeichnis zusammen mit den M2-Dateien
- * stehen, als auch im Verzeichnis, in dem der Praeprozessor nach Include-
- * Dateien sucht; falls der GNU-Praeprozessor (gcc-cpp) benutzt wird, muss
- * hierfuer die Environmentvariable GNUINC gesetzt werden, z.B.:
- *
- * setenv GNUINC f:\usr\include\m2
- *
- * Die Argumente der Makros sollten nur einfache (nicht Teil eines RECORDs
- * oder eines ARRAYs), lokale (vor allem keine VAR-Parameter) Variablen sein.
- *
- * Es wird nur das Datenregister D0 fuer die Parameteruebergabe benoetigt,
- * das TOS selbst veraendert die Register D0-D2 und A0-A2.
- */
-
- /* "BIOS"-Funktionsnummern */
- #define GETMPB 0
- #define BCONSTAT 1
- #define BCONIN 2
- #define BCONOUT 3
- #define RWABS 4
- #define SETEXC 5
- #define TICKCAL 6
- #define GETBPB 7
- #define BCOSTAT 8
- #define MEDIACH 9
- #define DRVMAP 10
- #define KBSHIFT 11
-
- /* "XBIOS"-Funktionsnummern */
- #define SUPEXEC 38
-
- /* "GEMDOS"-Funktionsnummern */
- #define PTERM0 0
- #define CCONIN 1
- #define CCONOUT 2
- #define CAUXIN 3
- #define CAUXOUT 4
- #define CPRNOUT 5
- #define CRAWIO 6
- #define CRAWCIN 7
- #define CNECIN 8
- #define CCONWS 9
- #define CCONRS 10
- #define CCONIS 11
- #define DSETDRV 14
- #define CCONOS 16
- #define CPRNOS 17
- #define CAUXIS 18
- #define CAUXOS 19
- #define MADDALT 20
- #define SREALLOC 21
- #define DGETDRV 25
- #define FSETDTA 26
- #define SUPER 32
- #define TGETDATE 42
- #define TSETDATE 43
- #define TGETTIME 44
- #define TSETTIME 45
- #define FGETDTA 47
- #define SVERSION 48
- #define PTERMRES 49
- #define DFREE 54
- #define DCREATE 57
- #define DDELETE 58
- #define DSETPATH 59
- #define FCREATE 60
- #define FOPEN 61
- #define FCLOSE 62
- #define FREAD 63
- #define FWRITE 64
- #define FDELETE 65
- #define FSEEK 66
- #define FATTRIB 67
- #define MXALLOC 68
- #define FDUP 69
- #define FFORCE 70
- #define DGETPATH 71
- #define MALLOC 72
- #define MFREE 73
- #define MSHRINK 74
- #define PEXEC 75
- #define PTERM 76
- #define FSFIRST 78
- #define FSNEXT 79
- #define FRENAME 86
- #define FDATIME 87
- #define FLOCK 92
-
- /* MultiGEM-Erweiterung */
- #define MFORK 112
-
- /* Mag!X-Erweiterung */
- #define SCONFIG 51
-
- /* MiNT-Erweiterungen */
- #define SYIELD 255
- #define FPIPE 256
- #define FCNTL 260
- #define FINSTAT 261
- #define FOUTSTAT 262
- #define FGETCHAR 263
- #define FPUTCHAR 264
- #define PWAIT 265
- #define PNICE 266
- #define PGETPID 267
- #define PGETPPID 268
- #define PGETPGRP 269
- #define PSETPGRP 270
- #define PGETUID 271
- #define PSETUID 272
- #define PKILL 273
- #define PSIGNAL 274
- #define PVFORK 275
- #define PGETGID 276
- #define PSETGID 277
- #define PSIGBLOCK 278
- #define PSIGSETMASK 279
- #define PUSRVAL 280
- #define PDOMAIN 281
- #define PSIGRETURN 282
- #define PFORK 283
- #define PWAIT3 284
- #define FSELECT 285
- #define PRUSAGE 286
- #define PSETLIMIT 287
- #define TALARM 288
- #define PAUSE 289
- #define SYSCONF 290
- #define PSIGPENDING 291
- #define DPATHCONF 292
- #define PMSG 293
- #define FMIDIPIPE 294
- #define PRENICE 295
- #define DOPENDIR 296
- #define DREADDIR 297
- #define DREWINDDIR 298
- #define DCLOSEDIR 299
- #define FXATTR 300
- #define FLINK 301
- #define FSYMLINK 302
- #define FREADLINK 303
- #define DCNTL 304
- #define FCHOWN 305
- #define FCHMOD 306
- #define PUMASK 307
- #define PSEMAPHORE 308
- #define DLOCK 309
- #define PSIGPAUSE 310
- #define PSIGACTION 311
- #define PGETEUID 312
- #define PGETEGID 313
- #define PWAITPID 314
- #define DGETCWD 315
- #define SALERT 316
-
-
- #ifdef MM2
- #define BTRAP 13
- #define XTRAP 14
- #define DTRAP 1
- #else
- #define BTRAP 4E4DH
- #define XTRAP 4E4EH
- #define DTRAP 4E41H
-
- #define ADDQ2 548FH /* ADDQ.l #2, sp */
- #define ADDQ4 588FH /* ADDQ.l #4, sp */
- #define ADDQ6 5C8FH /* ADDQ.l #6, sp */
- #define ADDQ8 508FH /* ADDQ.l #8, sp */
- #define LEA 4FEFH /* LEA <const>(sp), sp */
-
- #define PSHW 3F00H /* MOVE.W D0, -(sp) */
- #define PSHL 2F00H /* MOVE.L D0, -(sp) */
- #define PSHC 3F3CH /* MOVE.W #<const>, -(sp) */
- #endif
-
- #if (defined HM2) || (defined HM2_OLD)
- # define SAVEREGS CODE(48E7H,2020H);/* movem.l d2/a2, -(sp) */
- # define RESTOREREGS CODE(4CDFH,0404H);/* movem.l (sp)+, d2/a2 */
- #else
- # define SAVEREGS
- # define RESTOREREGS
- #endif
-
-
- #if (defined LPRM2) || (defined SPCM2)
- #undef CODE
-
- PROCEDURE BIOS0(f:WORD);CODE(BTRAP);
- PROCEDURE BIOS1w(p,f:WORD);CODE(BTRAP);
- PROCEDURE BIOS2w(p2,p1,f:WORD);CODE(BTRAP);
- PROCEDURE BIOS1w1l(p2:LONGCARD;p1,f:WORD);CODE(BTRAP);
- PROCEDURE BIOS1w1l3w1l(p6:LONGCARD;p5,p4,p3:WORD;p2:LONGCARD;p1,f:WORD);CODE(BTRAP);
- PROCEDURE BIOS1l(p:LONGCARD;f:WORD);CODE(BTRAP);
-
- PROCEDURE XBIOS1l(p1:LONGCARD;f:WORD);CODE(XTRAP);
-
- PROCEDURE GEMDOS0(f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1w(p,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS2w(p2,p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS3w(p3,p2,p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1w1l(p2:LONGCARD;p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1w2l(p3,p2:LONGCARD;p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1w3l(p4,p3,p2:LONGCARD;p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS2w1l(p3:LONGCARD;p2,p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS2w2l(p4,p3:LONGCARD;p2,p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1w1l1w(p3:WORD;p2:LONGCARD;p1,f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1l(p1:LONGCARD;f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS2l(p2,p1:LONGCARD;f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1l1w(p2:WORD;p1:LONGCARD;f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1l2w(p3,p2:WORD;p1:LONGCARD;f:WORD);CODE(DTRAP);
- PROCEDURE GEMDOS1l1w1l(p3:LONGCARD;p2:WORD;p1:LONGCARD;f:WORD);CODE(DTRAP);
- #define CODE INLINE
-
- #ifdef __OSCALLS__
- /* Die Syntax mit den Punkten fuer optionale Parameter ist
- * moeglicherweise GNU-CPP-spezifisch.
- */
- #define _INLINE(p...) /* Stackkorrektur kann entfallen */
- #else
- #define _INLINE INLINE
- #endif
-
- #define BCALL0(f)\
- BIOS0(f);_INLINE(ADDQ2)
- #define BCALL1w(f,p)\
- BIOS1w(p,f);_INLINE(ADDQ4)
- #define BCALL2w(f,p1,p2)\
- BIOS1w1l(p2,p1,f);_INLINE(ADDQ6)
- #define BCALL1w1l(f,p1,p2)\
- BIOS1w1l(p2,p1,f);_INLINE(ADDQ8)
- #define BCALL1w1l3w1l(f,p1,p2,p3,p4,p5,p6)\
- BIOS1w1l3w1l(p6,p5,p4,p3,p2,p1,f);_INLINE(LEA,18)
- #define BCALL1l(f,p)\
- BIOS1w(p,f);_INLINE(ADDQ6)
-
- #define XCALL1l(f,p)\
- XBIOS1l(p,f);_INLINE(ADDQ6)
-
-
- #define DCALL0(f)\
- GEMDOS0(f);_INLINE(ADDQ2)
- #define DCALL1w(f,p)\
- GEMDOS1w(p,f);_INLINE(ADDQ4)
- #define DCALL2w(f,p1,p2)\
- GEMDOS2w(p2,p1,f);_INLINE(ADDQ6)
- #define DCALL3w(f,p1,p2,p3)\
- GEMDOS3w(p3,p2,p1,f);_INLINE(ADDQ8)
- #define DCALL1w1l(f,p1,p2)\
- GEMDOS1w1l(p2,p1,f);_INLINE(ADDQ8)
- #define DCALL1w2l(f,p1,p2,p3)\
- GEMDOS1w2l(p3,p2,p1,f);_INLINE(LEA,12)
- #define DCALL1w3l(f,p1,p2,p3,p4)\
- GEMDOS1w3l(p4,p3,p2,p1,f);_INLINE(LEA,16)
- #define DCALL2w1l(f,p1,p2,p3)\
- GEMDOS2w1l(p3,p2,p1,f);_INLINE(LEA,10)
- #define DCALL2w2l(f,p1,p2,p3,p4)\
- GEMDOS2w2l(p4,p3,p2,p1,f);_INLINE(LEA,14)
- #define DCALL1w1l1w(f,p1,p2,p3)\
- GEMDOS1w1l1w(p3,p2,p1,f);_INLINE(LEA,10)
- #define DCALL1l(f,p)\
- GEMDOS1l(p,f);_INLINE(ADDQ6)
- #define DCALL2l(f,p1,p2)\
- GEMDOS2l(p2,p1,f);_INLINE(LEA,10)
- #define DCALL1l1w(f,p1,p2)\
- GEMDOS1l1w(p2,p1,f);_INLINE(ADDQ8)
- #define DCALL1l2w(f,p1,p2,p3)\
- GEMDOS1l2w(p3,p2,p1,f);_INLINE(LEA,10)
- #define DCALL1l1w1l(f,p1,p2,p3)\
- GEMDOS1l2w(p3,p2,p1,f);_INLINE(LEA,12)
-
- #elif (defined TDIM2)
-
- #ifdef __OSCALLS__
- #define _BCODE(p...) CODE(BTRAP)
- #define _XCODE(p...) CODE(XTRAP)
- #define _DCODE(p...) CODE(DTRAP)
- #else
- #define _BCODE CODE
- #define _XCODE CODE
- #define _DCODE CODE
- #endif
-
-
- #define BCALL0(f)\
- PUSH(f);_BCODE(BTRAP,ADDQ2)
- #define BCALL1w(f,p)\
- PUSH(CARDINAL(p));PUSH(CARDINAL(f));_BCODE(BTRAP,ADDQ4)
- #define BCALL2w(f,p1,p2)\
- PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_BCODE(BTRAP,ADDQ6)
- #define BCALL1w1l(f,p1,p2)\
- PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_BCODE(BTRAP,ADDQ8)
- #define BCALL1w1l3w1l(f,p1,p2,p3,p4,p5,p6)\
- PUSH(LONGCARD(p6));PUSH(CARDINAL(p5));PUSH(CARDINAL(p4));PUSH(CARDINAL(p3));\
- PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_BCODE(BTRAP,LEA,18)
- #define BCALL1l(f,p)\
- PUSH(LONGCARD(p));PUSH(CARDINAL(f));_BCODE(BTRAP,ADDQ6)
-
-
- #define XCALL1l(f,p)\
- PUSH(LONGCARD(p));PUSH(CARDINAL(f));_XCODE(XTRAP,ADDQ6)
-
-
- #define DCALL0(f)\
- PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ2)
- #define DCALL1w(f,p)\
- PUSH(CARDINAL(p));PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ4)
- #define DCALL2w(f,p1,p2)\
- PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ6)
- #define DCALL3w(f,p1,p2,p3)\
- PUSH(CARDINAL(p3));PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,ADDQ8)
- #define DCALL1w1l(f,p1,p2)\
- PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ8)
- #define DCALL1w2l(f,p1,p2,p3)\
- PUSH(LONGCARD(p3));PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,LEA,12)
- #define DCALL1w3l(f,p1,p2,p3,p4)\
- PUSH(LONGCARD(p4));PUSH(LONGCARD(p3));PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));\
- PUSH(CARDINAL(f));_DCODE(DTRAP,LEA,16)
- #define DCALL2w1l(f,p1,p2,p3)\
- PUSH(LONGCARD(p3));PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,LEA,10)
- #define DCALL2w2l(f,p1,p2,p3,p4)\
- PUSH(LONGCARD(p4));PUSH(LONGCARD(p3));PUSH(CARDINAL(p2));PUSH(CARDINAL(p1));\
- PUSH(CARDINAL(f));_DCODE(DTRAP,LEA,14)
- #define DCALL1w1l1w(f,p1,p2,p3)\
- PUSH(CARDINAL(p3));PUSH(LONGCARD(p2));PUSH(CARDINAL(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,LEA,10)
- #define DCALL1l(f,p)\
- PUSH(LONGCARD(p));PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ6)
- #define DCALL2l(f,p1,p2)\
- PUSH(LONGCARD(p2));PUSH(LONGCARD(p1));PUSH(CARDINAL(f));_DCODE(DTRAP,LEA,10)
- #define DCALL1l1w(f,p1,p2)\
- PUSH(CARDINAL(p2));PUSH(LONGCARD(p1));PUSH(CARDINAL(f));_DCODE(DTRAP,ADDQ8)
- #define DCALL1l2w(f,p1,p2,p3)\
- PUSH(CARDINAL(p3));PUSH(CARDINAL(p2));PUSH(LONGCARD(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,LEA,10)
- #define DCALL1l1w1l(f,p1,p2,p3)\
- PUSH(LONGCARD(p3));PUSH(CARDINAL(p2));PUSH(LONGCARD(p1));PUSH(CARDINAL(f));\
- _DCODE(DTRAP,LEA,12)
-
-
- #elif (defined MM2)
-
- #define BCALL0(f)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f))
- #define BCALL1w(f,p)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p))
- #define BCALL2w(f,p1,p2)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2))
- #define BCALL1w1l(f,p1,p2)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2))
- #define BCALL1w1l3w1l(f,p1,p2,p3,p4,p5,p6)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2),\
- CAST(SHORTCARD,p3),CAST(SHORTCARD,p4),CAST(SHORTCARD,p5),CAST(LONGCARD,p6))
- #define BCALL1l(f,p)\
- CALLSYS(BTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p))
-
-
- #define XCALL1l(f,p)\
- CALLSYS(XTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p))
-
-
- #define DCALL0(f)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f))
- #define DCALL1w(f,p)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p))
- #define DCALL2w(f,p1,p2)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2))
- #define DCALL3w(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2),\
- CAST(SHORTCARD,p3))
- #define DCALL1w1l(f,p1,p2)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2))
- #define DCALL1w2l(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2),\
- CAST(LONGCARD,p3))
- #define DCALL1w3l(f,p1,p2,p3,p4)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2),\
- CAST(LONGCARD,p3),CAST(LONGCARD,p4))
- #define DCALL2w1l(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2),\
- CAST(LONGCARD,p3))
- #define DCALL2w2l(f,p1,p2,p3,p4)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(SHORTCARD,p2),\
- CAST(LONGCARD,p3),CAST(LONGCARD,p4))
- #define DCALL1w1l1w(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(SHORTCARD,p1),CAST(LONGCARD,p2),\
- CAST(SHORTCARD,p3))
- #define DCALL1l(f,p)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p))
- #define DCALL2l(f,p1,p2)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(LONGCARD,p2))
- #define DCALL1l1w(f,p1,p2)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(SHORTCARD,p2))
- #define DCALL1l2w(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(SHORTCARD,p2),\
- CAST(SHORTCARD,p3))
- #define DCALL1l1w1l(f,p1,p2,p3)\
- CALLSYS(DTRAP,CAST(SHORTCARD,f),CAST(LONGCARD,p1),CAST(SHORTCARD,p2),\
- CAST(LONGCARD,p3))
-
- #else
-
- #define BCALL0(f)\
- CODE(PSHC,f,BTRAP,ADDQ2)
- #define BCALL1w(f,p)\
- SETREG(0,p);CODE(PSHW,PSHC,f,BTRAP,ADDQ4)
- #define BCALL2w(f,p1,p2)\
- SETREG(0,p2);CODE(PSHW);SETREG(0,p1);CODE(PSHW,PSHC,f,BTRAP,ADDQ6)
- #define BCALL1w1l(f,p1,p2)\
- SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHW,PSHC,f,BTRAP,ADDQ8)
- #define BCALL1w1l3w1l(f,p1,p2,p3,p4,p5,p6)\
- SETREG(0,p6);CODE(PSHL);SETREG(0,p5);CODE(PSHW);SETREG(0,p4);CODE(PSHW);\
- SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHL);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,BTRAP,LEA,18)
- #define BCALL1l(f,p)\
- SETREG(0,p);CODE(PSHL,PSHC,f,BTRAP,ADDQ6)
-
-
- #define XCALL1l(f,p)\
- SETREG(0,p);CODE(PSHL,PSHC,f,XTRAP,ADDQ6)
-
-
- #define DCALL0(f)\
- CODE(PSHC,f,DTRAP,ADDQ2)
- #define DCALL1w(f,p)\
- SETREG(0,p);CODE(PSHW,PSHC,f,DTRAP,ADDQ4)
- #define DCALL2w(f,p1,p2)\
- SETREG(0,p2);CODE(PSHW);SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,ADDQ6)
- #define DCALL3w(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,DTRAP,ADDQ8)
- #define DCALL1w1l(f,p1,p2)\
- SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,ADDQ8)
- #define DCALL1w2l(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHL);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,DTRAP,LEA,12)
- #define DCALL1w3l(f,p1,p2,p3,p4)\
- SETREG(0,p4);CODE(PSHL);SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHL);\
- SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,LEA,16)
- #define DCALL2w1l(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,DTRAP,LEA,10)
- #define DCALL2w2l(f,p1,p2,p3,p4)\
- SETREG(0,p4);CODE(PSHL);SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHW);\
- SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,LEA,14)
- #define DCALL1w1l1w(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHL);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,DTRAP,LEA,10)
- #define DCALL1l(f,p)\
- SETREG(0,p);CODE(PSHL,PSHC,f,DTRAP,ADDQ6)
- #define DCALL2l(f,p1,p2)\
- SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHL,PSHC,f,DTRAP,LEA,10)
- #define DCALL1l1w(f,p1,p2)\
- SETREG(0,p2);CODE(PSHW);SETREG(0,p1);CODE(PSHL,PSHC,f,DTRAP,ADDQ8)
- #define DCALL1l2w(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
- CODE(PSHL,PSHC,f,DTRAP,LEA,10)
- #define DCALL1l1w1l(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
- CODE(PSHL,PSHC,f,DTRAP,LEA,12)
-
- #endif
-
- /*==========================================================================*/
- /* "BIOS"-Calls */
- /*==========================================================================*/
-
- #define getmpb(_MPB)\
- SAVEREGS\
- BCALL1l(GETMPB,_MPB);\
- RESTOREREGS
-
- #define bconstat(_DEV,_READY)\
- SAVEREGS\
- BCALL1w(BCONSTAT,_DEV);\
- RESTOREREGS\
- GETSWREG(0,_READY)
-
- #define bconin(_DEV,_KEY)\
- SAVEREGS\
- BCALL1w(CCONIN,_DEV);\
- RESTOREREGS\
- GETLREG(0,_KEY)
-
- #define bconout(_DEV,_CHAR)\
- SAVEREGS\
- BCALL2w(BCONOUT,_DEV,_CHAR);\
- RESTOREREGS
-
- #define rwabs(_FLAG,_BUF,_CNT,_REC,_DEV,_LREC,_RES)\
- SAVEREGS\
- BCALL1w1l3w1l(RWABS,_FLAG,_BUF,_CNT,_REC,_DEV,_LREC);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define setexc(_VEC,_ADR,_OLD)\
- SAVEREGS\
- BCALL1w1l(SETEXC,_VEC,_ADR);\
- RESTOREREGS\
- GETREGADR(0,_OLD)
-
- #define tickcal(_MS)\
- SAVEREGS\
- BCALL0(TICKCAL);\
- RESTOREREGS\
- GETLREG(0,_MS)
-
- #define bcostat(_DEV,_READY)\
- SAVEREGS\
- BCALL1w(BCOSTAT,_DEV);\
- RESTOREREGS\
- GETSWREG(0,_READY)
-
- #define getbpb(_DEV,_BPB)\
- SAVEREGS\
- BCALL1w(GETBPB,_DEV);\
- RESTOREREGS\
- GETLREG(0,_BPB)
-
- #define mediach(_DEV,_CHG)\
- SAVEREGS\
- BCALL1w(MEDIACH,_DEV);\
- RESTOREREGS\
- GETSWREG(0,_CHG)
-
- #define drvmap(_DRIVES)\
- SAVEREGS\
- BCALL0(DRVMAP);\
- RESTOREREGS\
- GETLREG(0,_DRIVES)
-
- #define kbshift(_MODE,_STAT)\
- SAVEREGS\
- BCALL1w(KBSHIFT,_MODE);\
- RESTOREREGS\
- GETLREG(0,_STAT)
-
-
- /*==========================================================================*/
- /* "XBIOS"-Calls */
- /*==========================================================================*/
-
- #define supexec(_PROC)\
- SAVEREGS\
- XCALL1l(SUPEXEC,_PROC);\
- RESTOREREGS
-
- /*==========================================================================*/
- /* "GEMDOS"-Calls */
- /*==========================================================================*/
-
-
- #define p_term0()\
- DCALL0(PTERM0)
-
- #define c_conin(_KEY)\
- SAVEREGS\
- DCALL0(CCONIN);\
- RESTOREREGS\
- GETLREG(0,_KEY)
-
- #define c_conout(_CHAR)\
- SAVEREGS\
- DCALL1w(CCONOUT,_CHAR);\
- RESTOREREGS
-
- #define c_auxin(_CHAR)\
- SAVEREGS\
- DCALL0(CAUXIN);\
- RESTOREREGS\
- GETSWREG(0,_CHAR)
-
- #define c_auxout(_CHAR)\
- SAVEREGS\
- DCALL1w(CAUXOUT,_CHAR);\
- RESTOREREGS
-
- #define c_prnout(_CHAR)\
- SAVEREGS\
- DCALL1w(CPRNOUT,_CHAR);\
- RESTOREREGS
-
- #define c_rawio(_DAT,_RES)\
- SAVEREGS\
- DCALL1w(CRAWIO,_DAT);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define c_rawcin(_KEY)\
- SAVEREGS\
- DCALL0(CRAWCIN);\
- RESTOREREGS\
- GETLREG(0,_KEY)
-
- #define c_necin(_KEY)\
- SAVEREGS\
- DCALL0(CNECIN);\
- RESTOREREGS\
- GETLREG(0,_KEY)
-
- #define c_conws(_STR)\
- SAVEREGS\
- DCALL1l(CCONWS,_STR);\
- RESTOREREGS
-
- #define c_conrs(_BUF)\
- SAVEREGS\
- DCALL1l(CCONRS,_BUF);\
- RESTOREREGS
-
- #define c_conis(_STAT)\
- SAVEREGS\
- DCALL0(CCONIS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define d_setdrv(_DRV,_DRIVES)\
- SAVEREGS\
- DCALL1w(DSETDRV,_DRV);\
- RESTOREREGS\
- GETLREG(0,_DRIVES)
-
- #define c_conos(_STAT)\
- SAVEREGS\
- DCALL0(CCONOS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define c_prnos(_STAT)\
- SAVEREGS\
- DCALL0(CPRNOS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define c_auxis(_STAT)\
- SAVEREGS\
- DCALL0(CAUXIS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define c_auxos(_STAT)\
- SAVEREGS\
- DCALL0(CAUXOS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define m_addalt(_START,_SIZE,_RES)\
- SAVEREGS\
- DCALL2l(MADDALT,_START,_SIZE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define s_realloc(_SIZE,_ADR)\
- SAVEREGS\
- DCALL1l(SREALLOC,_SIZE);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define d_getdrv(_DRV)\
- SAVEREGS\
- DCALL0(DGETDRV);\
- RESTOREREGS\
- GETUWREG(0,_DRV)
-
- #define f_setdta(_DTA)\
- SAVEREGS\
- DCALL1l(FSETDTA,_DTA);\
- RESTOREREGS
-
- #define s_uper(_DAT,_VAL)\
- SAVEREGS\
- DCALL1l(SUPER,_DAT);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define t_getdate(_DATE)\
- SAVEREGS\
- DCALL0(TGETDATE);\
- RESTOREREGS\
- GETUWREG(0,_DATE)
-
- #define t_setdate(_DATE,_RES)\
- SAVEREGS\
- DCALL1w(TSETDATE,_DATE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define t_gettime(_TIME)\
- SAVEREGS\
- DCALL0(TGETTIME);\
- RESTOREREGS\
- GETUWREG(0,_TIME)
-
- #define t_settime(_TIME,_RES)\
- SAVEREGS\
- DCALL1w(TSETTIME,_TIME);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_getdta(_DTA)\
- SAVEREGS\
- DCALL0(FGETDTA);\
- RESTOREREGS\
- GETREGADR(0,_DTA)
-
- #define s_version(_VERS)\
- SAVEREGS\
- DCALL0(SVERSION);\
- RESTOREREGS\
- GETUWREG(0,_VERS)
-
- #define p_termres(_KEEP,_RET)\
- DCALL1l1w(PTERMRES,_KEEP,_RET)
-
- #define d_free(_BUF,_DRV,_RES)\
- SAVEREGS\
- DCALL1l1w(DFREE,_BUF,_DRV);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_create(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DCREATE,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_delete(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DDELETE,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_setpath(_PATH,_RES)\
- SAVEREGS\
- DCALL1l(DSETPATH,_PATH);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_create(_FILE,_ATTR,_HNDL)\
- SAVEREGS\
- DCALL1l1w(FCREATE,_FILE,_ATTR);\
- RESTOREREGS\
- GETLREG(0,_HNDL)
-
- #define f_open(_FILE,_MODE,_HNDL)\
- SAVEREGS\
- DCALL1l1w(FOPEN,_FILE,_MODE);\
- RESTOREREGS\
- GETLREG(0,_HNDL)
-
- #define f_close(_HNDL,_RES)\
- SAVEREGS\
- DCALL1w(FCLOSE,_HNDL);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_read(_HNDL,_LEN,_BUF,_CNT)\
- SAVEREGS\
- DCALL1w2l(FREAD,_HNDL,_LEN,_BUF);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define f_write(_HNDL,_LEN,_BUF,_CNT)\
- SAVEREGS\
- DCALL1w2l(FWRITE,_HNDL,_LEN,_BUF);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define f_delete(_FILE,_RES)\
- SAVEREGS\
- DCALL1l(FDELETE,_FILE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_seek(_OFF,_HNDL,_MODE,_POS)\
- SAVEREGS\
- DCALL1l2w(FSEEK,_OFF,_HNDL,_MODE);\
- RESTOREREGS\
- GETLREG(0,_POS)
-
- #define f_attrib(_FILE,_FLAG,_ATTR,_OLD)\
- SAVEREGS\
- DCALL1l2w(FATTRIB,_FILE,_FLAG,_ATTR);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define m_xalloc(_SIZE,_MODE,_ADR)\
- SAVEREGS\
- DCALL1l1w(MXALLOC,_SIZE,_MODE);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define f_dup(_STD,_HNDL)\
- SAVEREGS\
- DCALL1w(FDUP,_STD);\
- RESTOREREGS\
- GETLREG(0,_HNDL)
-
- #define f_force(_STD,_HNDL,_RES)\
- SAVEREGS\
- DCALL2w(FFORCE,_STD,_HNDL);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_getpath(_PATH,_DRV,_RES)\
- SAVEREGS\
- DCALL1l1w(DGETPATH,_PATH,_DRV);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define m_alloc(_SIZE,_ADR)\
- SAVEREGS\
- DCALL1l(MALLOC,_SIZE);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define m_free(_ADR,_RES)\
- SAVEREGS\
- DCALL1l(MFREE,_ADR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define m_shrink(_ADR,_SIZE,_RES)\
- SAVEREGS\
- DCALL1w2l(MSHRINK,0,_ADR,_SIZE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_exec(_MODE,_PROG,_TAIL,_ENV,_RES)\
- SAVEREGS\
- DCALL1w3l(PEXEC,_MODE,_PROG,_TAIL,_ENV);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define p_term(_RET)\
- DCALL1w(PTERM,_RET)
-
- #define f_sfirst(_FILE,_ATTR,_RES)\
- SAVEREGS\
- DCALL1l1w(FSFIRST,_FILE,_ATTR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_snext(_RES)\
- SAVEREGS\
- DCALL0(FSNEXT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_rename(_OLD,_NEW,_RES)\
- SAVEREGS\
- DCALL1w2l(FRENAME,0,_OLD,_NEW);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_datime(_DATIME,_FILE,_FLAG)\
- SAVEREGS\
- DCALL1l2w(FDATIME,_DATIME,_FILE,_FLAG);\
- RESTOREREGS
-
- #define f_lock(_HDL,_MODE,_FROM,_LEN,_RES)\
- SAVEREGS\
- DCALL2w2l(FLOCK,_HDL,_MODE,_FROM,_LEN);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
-
-
- /*==========================================================================*/
- /* MultiGEM-Calls */
- /*==========================================================================*/
-
- #define m_fork(_PRG,_CMD,_RES)\
- SAVEREGS\
- DCALL1l1w1l(MFORK,_PRG,5AA7H,_CMD);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
-
-
- /*==========================================================================*/
- /* Mag!X-Calls */
- /*==========================================================================*/
-
- #define s_config(_MODE,_SET,_RES)\
- SAVEREGS\
- DCALL1w1l(SCONFIG,_MODE,_SET);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
-
-
- /*==========================================================================*/
- /* MiNT-Calls */
- /*==========================================================================*/
-
- #define s_yield()\
- SAVEREGS\
- DCALL0(SYIELD);\
- RESTOREREGS
-
- #define f_pipe(_PTR,_RES)\
- SAVEREGS\
- DCALL1l(FPIPE,_PTR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_cntl(_HNDL,_ARG,_CMD,_RES)\
- SAVEREGS\
- DCALL1w1l1w(FCNTL,_HNDL,_ARG,_CMD);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define f_instat(_HNDL,_CNT)\
- SAVEREGS\
- DCALL1w(FINSTAT,_HNDL);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define f_outstat(_HNDL,_CNT)\
- SAVEREGS\
- DCALL1w(FOUTSTAT,_HNDL);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define f_getchar(_HNDL,_MODE,_RES)\
- SAVEREGS\
- DCALL2w(FGETCHAR,_HNDL,_MODE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define f_putchar(_HNDL,_CHAR,_MODE,_RES)\
- SAVEREGS\
- DCALL1w1l1w(FPUTCHAR,_HNDL,_CHAR,_MODE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define p_wait(_RES)\
- SAVEREGS\
- DCALL0(PWAIT);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define p_nice(_DELTA,_PRIO)\
- SAVEREGS\
- DCALL1w(PNICE,_DELTA);\
- RESTOREREGS\
- GETLREG(0,_PRIO)
-
- #define p_getpid(_PID)\
- SAVEREGS\
- DCALL0(PGETPID);\
- RESTOREREGS\
- GETUWREG(0,_PID)
-
- #define p_getppid(_PPID)\
- SAVEREGS\
- DCALL0(PGETPPID);\
- RESTOREREGS\
- GETUWREG(0,_PPID)
-
- #define p_getpgrp(_PGRP)\
- SAVEREGS\
- DCALL0(PGETPGRP);\
- RESTOREREGS\
- GETUWREG(0,_PGRP)
-
- #define p_setpgrp(_PID,_GRP,_RES)\
- SAVEREGS\
- DCALL2w(PSETPGRP,_PID,_GRP);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_getuid(_UID)\
- SAVEREGS\
- DCALL0(PGETUID);\
- RESTOREREGS\
- GETUWREG(0,_UID)
-
- #define p_setuid(_UID,_RES)\
- SAVEREGS\
- DCALL1w(PSETUID,_UID);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_kill(_PID,_SIG,_RES)\
- SAVEREGS\
- DCALL2w(PKILL,_PID,_SIG);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_signal(_SIG,_HANDLER,_OLD)\
- SAVEREGS\
- DCALL1w1l(PSIGNAL,_SIG,_HANDLER);\
- RESTOREREGS\
- GETREGADR(0,_OLD)
-
- #define p_vfork(_RES)\
- SAVEREGS\
- DCALL0(PVFORK);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_getgid(_GID)\
- SAVEREGS\
- DCALL0(PGETGID);\
- RESTOREREGS\
- GETUWREG(0,_GID)
-
- #define p_setgid(_GID,_RES)\
- SAVEREGS\
- DCALL1w(PSETGID,_GID);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_sigblock(_MASK,_OLD)\
- SAVEREGS\
- DCALL1l(PSIGBLOCK,_MASK);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define p_sigsetmask(_MASK,_OLD)\
- SAVEREGS\
- DCALL1l(PSIGSETMASK,_MASK);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define p_usrval(_ARG,_VAL)\
- SAVEREGS\
- DCALL1l(PUSRVAL,_ARG);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define p_domain(_DOM,_OLD)\
- SAVEREGS\
- DCALL1w(PDOMAIN,_DOM);\
- RESTOREREGS\
- GETSWREG(0,_OLD)
-
- #define p_sigreturn()\
- SAVEREGS\
- DCALL0(PSIGRETURN);\
- RESTOREREGS
-
- #define p_fork(_RES)\
- SAVEREGS\
- DCALL0(PFORK);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_wait3(_FLAG,_RUSAGE,_RES)\
- SAVEREGS\
- DCALL1w1l(PWAIT3,_FLAG,_RUSAGE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define f_select(_TIMEOUT,_RFDS,_WFDS,_XFDS,_RES)\
- SAVEREGS\
- DCALL1w3l(FSELECT,_TIMEOUT,_RFDS,_WFDS,_XFDS);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_rusage(_RSCADR)\
- SAVEREGS\
- DCALL1l(PRUSAGE,_RSCADR);\
- RESTOREREGS
-
- #define p_setlimit(_LIM,_VAL,_OLD)\
- SAVEREGS\
- DCALL1w1l(PSETLIMIT,_LIM,_VAL);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define t_alarm(_SECS,_OLD)\
- SAVEREGS\
- DCALL1l(TALARM,_SECS);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define p_ause()\
- SAVEREGS\
- DCALL0(PAUSE);\
- RESTOREREGS
-
- #define s_ysconf(_WHICH,_VAL)\
- SAVEREGS\
- DCALL1w(SYSCONF,_WHICH);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define p_sigpending(_SIGS)\
- SAVEREGS\
- DCALL0(PSIGPENDING);\
- RESTOREREGS\
- GETLREG(0,_SIGS)
-
- #define d_pathconf(_NAME,_WHICH,_VAL)\
- SAVEREGS\
- DCALL1l1w(DPATHCONF,_NAME,_WHICH);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define p_msg(_MODE,_MBOXID,_MSGPTR,_RES)\
- SAVEREGS\
- DCALL1w2l(PMSG,_MODE,_MBOXID,_MSGPTR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_midipipe(_PID,_IN,_OUT,_RES)\
- SAVEREGS\
- DCALL3w(FMIDIPIPE,_PID,_IN,_OUT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_renice(_PID,_DELTA,_CURRENT)\
- SAVEREGS\
- DCALL2w(PRENICE,_PID,_DELTA);\
- RESTOREREGS\
- GETLREG(0,_CURRENT)
-
- #define d_opendir(_NAME,_FLAG,_DIR)\
- SAVEREGS\
- DCALL1l1w(DOPENDIR,_NAME,_FLAG);\
- RESTOREREGS\
- GETLREG(0,_DIR)
-
- #define d_readdir(_LEN,_DIR,_BUF,_RES)\
- SAVEREGS\
- DCALL1w2l(DREADDIR,_LEN,_DIR,_BUF);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_rewinddir(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DREWINDDIR,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_closedir(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DCLOSEDIR,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_xattr(_FLAG,_NAME,_XATTR,_RES)\
- SAVEREGS\
- DCALL1w2l(FXATTR,_FLAG,_NAME,_XATTR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_link(_OLD,_NEW,_RES)\
- SAVEREGS\
- DCALL2l(FLINK,_OLD,_NEW);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_symlink(_OLD,_NEW,_RES)\
- SAVEREGS\
- DCALL2l(FSYMLINK,_OLD,_NEW);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_readlink(_BUFSIZ,_BUF,_NAME,_RES)\
- SAVEREGS\
- DCALL1w2l(FREADLINK,_BUFSIZ,_BUF,_NAME);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define d_cntl(_CMD,_NAME,_ARG,_RES)\
- SAVEREGS\
- DCALL1w2l(DCNTL,_CMD,_NAME,_ARG);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define f_chown(_FILE,_UID,_GID,_RES)\
- SAVEREGS\
- DCALL1l2w(FCHOWN,_FILE,_UID,_GID);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define f_chmod(_FILE,_MODE,_RES)\
- SAVEREGS\
- DCALL1l1w(FCHMOD,_FILE,_MODE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_umask(_MODE,_OLD)\
- SAVEREGS\
- DCALL1w(PUMASK,_MODE);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define p_semaphore(_MODE,_ID,_TOUT,_RES)\
- SAVEREGS\
- DCALL1w2l(PSEMAPHORE,_MODE,_ID,_TOUT);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define d_lock(_MODE,_DRV,_RES)\
- SAVEREGS\
- DCALL2w(DLOCK,_MODE,_DRV);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_sigpause(_SIGMASK)\
- SAVEREGS\
- DCALL1l(PSIGPAUSE,_SIGMASK);\
- RESTOREREGS
-
- #define p_sigaction(_SIG,_ACT,_OACT,_RES)\
- SAVEREGS\
- DCALL1w2l(PSIGACTION,_SIG,_ACT,_OACT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define p_geteuid(_EUID)\
- SAVEREGS\
- DCALL0(PGETEUID);\
- RESTOREREGS\
- GETUWREG(0,_EUID)
-
- #define p_getegid(_EGID)\
- SAVEREGS\
- DCALL0(PGETEGID);\
- RESTOREREGS\
- GETUWREG(0,_EGID)
-
- #define p_waitpid(_PID,_FLAG,_RUSAGE,_RES)\
- SAVEREGS\
- DCALL2w1l(PWAITPID,_PID,_FLAG,_RUSAGE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define d_getcwd(_PATH,_DRV,_SIZE,_RES)\
- SAVEREGS\
- DCALL1l2w(DGETCWD,_PATH,_DRV,_SIZE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define s_alert(_MSG)\
- SAVEREGS\
- DCALL1l(SALERT,_MSG);\
- RESTOREREGS
-
-